home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d1
/
eddtv4.arc
/
CMOSREAD.ASM
< prev
next >
Wrap
Assembly Source File
|
1988-03-28
|
4KB
|
100 lines
.XLIST
.286 ; ENABLE 80286 OP CODES
PAGE 80,120
PAGE
TITLE èÄ CMOSREAD - CONFIGURATION MEMORY (CMOS) READö
.LIST
SUBTTL ROUTINE TO READ CONFIGURATION (CMOS) MEMORY
COMMENT *
CMOSREAD - VERSION 1.00
Copyright 1987,1988 Don Gentry
A limited license is granted to all users of this program,
to make copies of this program, and distribute them to
other users, on the following conditions:
1. The notice on this page is not to be removed or altered
2. No fee is to be charged for copying or distributing
the program.
3. No warranty of any kind is offered. This program is offered
on an "AS IS" basis. Each user should verify that it meets
his needs and verify correct operation.
4. No further restrictions on redristribution of any kind may
be required. This includes, but is not limited to,
COMPUSERVE or other program distribution services,
by electronic or other means.
FOR HELP OR SUGGESTIONS WRITE:
DON GENTRY
183 BELLEGROVE CIRCLE
BRANDON, MS 39042
OR CALL (601) 992-0577
*
PAGE
;-----------------------------------------------------------------------
;
; PROCEDURE CMOSREAD
;
; PURPOSE:
; READ FROM CONFIGURATION (CMOS) MEMORY
;
; PARAMETERS:
; DS:DX - POINTER TO A 32 BYTE AREA TO CONTAIN
; THE CONTENTS OF CMOS MEMORY BYTES
; 10 - 2F
;
; OUTPUT:
; THE 32 BYTE AREA POINTED TO BY DS:DX CONTAINS
; A COPY OF CMOS MEMORY BYTES 10 - 2F
;
;-----------------------------------------------------------------------
PUBLIC CMOSREAD ; TELL THE LINKER ABOUT US
;
; ----- EQUATES FOR EASE OF CODING
;
CM_ADDR EQU 070H ; CMOS ADDRESSING PORT
CM_IO EQU 071H ; CMOS I/O PORT
;
CMR_CODE SEGMENT PUBLIC 'CODE' ; IDENTIFY THE CODE SEGMENT
ASSUME CS:CMR_CODE ; INFORM THE ASSEMBLER
CMOSREAD PROC FAR ; IDENTIFY THE PROCEDURE
JMP CMR_GO ; JUMP OVER MODULE ID
DB 8 ; LENGTH OF ID
DB 'CMOSREAD' ; MODULE EYE-CATCHER
DB 'V1M0' ; VERSION & MOD LEVEL
DB 'Copyright 1987,1988 Don Gentry'
CMR_GO: ; BEGIN ACTUAL LOGIC
PUSHA ; SAVE REGISTERS
MOV BX,DX ; GET RECEIVING FIELD ADDRESS
MOV CX,02FH ; GET ENDING BYTE OF CMOS
CMR_LOOP: ; LOOP FOR CMOS DATA
MOV AL,CL ; GET FIRST BYTE TO RETRIEVE
OUT CM_ADDR,AL ; SEND ADDRESS TO PORT
JMP $+2 ; WAIT FOR DATA TO SETTLE
JMP $+2 ; ON THE BUS
IN AL,CM_IO ; READ THE DATA BYTE
JMP $+2 ; WAIT FOR DATA TO SETTLE
JMP $+2 ; ON THE BUS
MOV SI,CX ; GET RELATIVE BYTE IN SI
SUB SI,010H ; ADJUST FOR NOT RETRIEVED
MOV DS:[BX+SI],AL ; SAVE THE BYTE FROM CMOS
CMP CX,010H ; DONE THEM ALL ?
JE CMR_EXIT ; ...YES - EXIT THE LOOP
LOOP CMR_LOOP ; LOOP 'TIL DONE
CMR_EXIT: ; EXIT HERE WHEN DONE
POPA ; RESTORE REGISTERS
;
; ----- RETURN TO CALLER
;
RET ; RETURN
CMOSREAD ENDP ; END OF PROCEDURE
CMR_CODE ENDS ; END OF SEGMENT
END